package fib

import (
	"fmt"
	"io"
	"strings"
)

func Fibonacci() func() int {
	a, b := 0, 1
	return func() int {
		a, b = b, a+b
		return a
	}
}

// IntGen 重新认识一等公民 => 类型, 参数, 变量, 返回值, 定义方法
type IntGen func() int //

func (g IntGen) Read(p []byte) (n int, err error) {
	val := g()
	if val > 10000 {
		return -1, io.EOF
	}
	s := fmt.Sprintf("%d\n", val)
	return strings.NewReader(s).Read(p)
}
